//错误号错误码统一定义

/**
 * 返回码统一定义
 * @type {module.exports}
 */
const fs = require('fs');
const inibuilder = require('ini-builder');

module.exports = class {
    constructor() {
        //解析
        this.maps = inibuilder.parse(fs.readFileSync(think.ROOT_PATH + "/src/common/errmap/map.ini"));
    }


    //手动设置错误信息
    mapErrmsg(errmsg) {
        if (!errmsg) {
            return false;
        }
        let f1 = this.errno = String(999);
        let f2 = this.errmsg = errmsg;
        //生成自动回复的信息
        if (f1 && f2)
            return this.makeCode();
        return false;
    }

    //错误号自动获取信息
    mapErrno(errno, data) {
        let f1 = this.setErrnoAndErrmsg(errno);
        //生成自动回复的信息;
        if (f1!==false)
            return this.makeCode(data);
        return false;
    }

    //设置错误号
    setErrnoAndErrmsg(errno) {
        if (errno===false) {
            return false;
        }
        this.errno = String(errno);
        return this.errmsg = inibuilder.find(this.maps, this.errno).value;
    }


    //设置错误信息
    setErrmsg(errmsg) {
        return this.errmsg = inibuilder.find(this.maps, this.errno).value;
    }


    //生成信息
    makeCode(data) {
        if (this.errno && this.errmsg) {
            if (!(think.isEmpty(data) && data!==0)) {
                return {
                    errno: this.errno,
                    errmsg: this.errmsg,
                    data: data
                }
            } else {
                return {
                    errno: this.errno,
                    errmsg: this.errmsg,
                }
            }
        }
        return false
    }

};